package com.battle.service.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.battle.pojo.entity.Sirens;
import com.battle.pojo.param.sirens.*;
import com.battle.pojo.vo.sirens.*;
import com.battle.pojo.dto.sirens.*;
import com.battle.service.repository.in.SirensRepository;
import com.battle.service.service.in.SirensService;
import nirvana.core.domains.vo.PageResult;
import nirvana.core.utils.ids.IdGenerator;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;


import java.util.ArrayList;
import java.util.List;

/**
 * 【描 述】：警情服务
 * 【环 境】：J2SE 17
 * 【详 细】：
 */
@Service
public class SirensServiceImpl implements SirensService {

    private final SirensRepository sirensRepository;

    public SirensServiceImpl(SirensRepository sirensRepository) {
        this.sirensRepository = sirensRepository;
    }


    /**
     * 创建警情
     *
     * @param param
     */
    @Override
    public void createSirens(CreateSirensParam param) {
        Sirens sirens = new Sirens();
        BeanUtils.copyProperties(param, sirens);
        Long id = IdGenerator.SNOW.generate();
        sirens.setId(id);
        sirensRepository.create(sirens);
    }

    /**
     * 修改警情
     *
     * @param param
     */
    @Override
    public void editSirens(EditSirensParam param) {
        Long id = param.getId();
        Sirens sirens = sirensRepository.getByIdCheck(id);
        BeanUtils.copyProperties(param, sirens);
        sirensRepository.edit(sirens);
    }

    /**
     * 移除警情
     *
     * @param id
     */
    @Override
    public void removeSirens(Long id) {
        sirensRepository.removeById(id);
    }

    /**
     * 启动/禁用警情
     *
     * @param id
     */
    @Override
    public void enabledSirens(Long id) {
        Sirens sirens = sirensRepository.getByIdCheck(id);
        sirens.setIsDisable(!sirens.getIsDisable());
        sirensRepository.edit(sirens);
    }

    /**
     * 获取警情详情
     *
     * @param id
     * @return
     */
    @Override
    public GetSirensVo getSirens(Long id) {
        Sirens sirens = sirensRepository.getByIdCheck(id);
        GetSirensVo vo = new GetSirensVo();
        BeanUtils.copyProperties(sirens, vo);
        return vo;
    }

    /**
     * 获取警情 列表
     *
     * @param param
     * @return
     */
    @Override
    public PageResult<GetSirensListVo> getSirensList(GetSirensListParam param) {

        SelectSirensDto dto = new SelectSirensDto();
        BeanUtils.copyProperties(param, dto);
        Page<Sirens> page = sirensRepository.selectSirens(dto);
        List<Sirens> sirensList = page.getRecords();
        List<GetSirensListVo> list = new ArrayList<>();
        for (Sirens sirens : sirensList) {
            GetSirensListVo vo = new GetSirensListVo();
            BeanUtils.copyProperties(sirens, vo);

            list.add(vo);
        }
        return new PageResult<>(list, page);

    }

    /**
     * 获取警情下拉列表
     *
     * @param param
     * @return
     */
    @Override
    public List<GetSirensDownListVo> getSirensDownList(GetSirensDownListParam param) {
        Sirens po = new Sirens();
        if (param != null) {
            BeanUtils.copyProperties(param, po);
        }
        List<Sirens> sirensList = sirensRepository.getListByEntity(po);

        List<GetSirensDownListVo> list = new ArrayList<>();
        for (Sirens sirens : sirensList) {
            GetSirensDownListVo vo = new GetSirensDownListVo();
            BeanUtils.copyProperties(sirens, vo);
            list.add(vo);
        }
        return list;
    }


}



